home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Magazin: Amiga-CD 1996 November & December
/
Amiga-CD 1996 #11-12.iso
/
aminet
/
10_96
/
lha-archiv
/
abook_10upd.lha
/
Arexx
/
ABook.intui
< prev
next >
Wrap
Text File
|
1995-12-30
|
7KB
|
213 lines
/*
** $VER: ABook.intui V00.04 (28.12.95)
**
** © 1995 Michael Brakemeier
**
** $PROGRAMNAME:
** ABook.intui
**
** FUNCTION:
** Lets ABook-Server handle IntuiNews's address book.
**
** $HISTORY:
**
** 28.12.95 : V00.04 : Added 'SAVE' command and fixed surname only bug
** 21.12.95 : V00.03 : fixed a little bug in query routine
** 07.09.95 : V00.02 : first working version :-)
** 05.09.95 : V00.01 : initial release
**
**
** TO DO:
** - support for ABook-groups,
** but in which group should we save????
*/
OPTIONS RESULTS
SIGNAL ON SYNTAX
if ~show('P','ABOOK_SERVER') then do
'REQUEST "ABook" "**_OK" "Sorry, ABook-Server is not running !"'
exit 10
end
oldaddress = address()
/* parse command line */
PARSE ARG Command " " Name "," eaddr "," incomment
/* build database on query */
if Command = 'QUERY' then
do
address 'ABOOK_SERVER'
'SEARCH #? EMAIL STEM=ABLOCKS.'
if RC = 0 then
if ABLOCKS.COUNT ~= 0 then
do entry = 1 to ABLOCKS.COUNT
'LOCK '||ABLOCKS.entry
if RC ~= 0 then
do
if RC = 5 then
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK" PROMPT="Sorry, database is in use !"'
else
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK" PROMPT="Sorry, can''t get data !"'
exit 10
end
else
do
'QUERY STEM=ADDR.'
'UNLOCK '||ABLOCKS.entry
if ADDR.FIRST ~= "" then
fullname = ADDR.FIRST||' '||ADDR.LAST
else
fullname = ADDR.LAST
address value oldaddress
do emailno=1 to ADDR.EMAIL.COUNT
'ADD "'||fullname||'" "'||ADDR.EMAIL.emailno.ADR||'" "'||ADDR.EMAIL.emailno.DES||'"'
end
address 'ABOOK_SERVER'
end
end
signal done
end /* QUERY */
/* add a new address */
if Command = 'ADD' then
do
/* parse given args */
sep=lastpos(' ', Name)
if sep = 0 then
do
prename = ''
surname = Name
end
else
do
prename = left(Name, sep-1)
surname = substr(Name, sep+1)
end
if incomment = 'INCOMMENT' then
incomment = ''
/* search for an existing entry */
address 'ABOOK_SERVER'
'SEARCH '||eaddr||' NOCASE EMAIL STEM=ABDATA.'
if RC = 0 then
do
if ABDATA.COUNT > 0 then
do
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK"',
' PROMPT="There is allready an entry with email-address\n\33c\338'||eaddr||'\330\nin the database !"'
signal done
end
end
lock = -1
'SEARCH '||surname||' NOCASE LAST STEM=ABDATA.'
if RC=0 then
do
if ABDATA.COUNT > 0 then
do
if ABDATA.COUNT > 1 then
do
if prename <> '' then
do
/* hmpf, multiple occurences... */
'SEARCH ||'prename'|| NOCASE FIRST STEM=ABMULT.'
if RC=0 then
do
if ABDATA.COUNT > 0 then
do
if ABDATA.COUNT > 1 then
do
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK"',
'PROMPT="Sorry, too many matching entries\nin database. Couldn''t add !"'
signal done
end
else
do
entry = 1
lock = 0
do while ABMULT.1 <> ABDATA.entry
entry = entry + 1
if entry > ABDATA.COUNT then
do
/* hm, no matching entry ? Maybe prename is an abbrev, but who cares :-) */
lock = -1
leave
end
end
if lock <> -1 then
lock = ABDATA.entry
end
end
end /* found matching entry via pre- & surname */
end
else
do
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_OK"',
'PROMPT="Sorry, too many matching entries\nin database. Couldn''t add !"'
signal done
end
end
else
do
/* one matching entry, append email and comment */
lock = ABDATA.1
end
end /* search for lock */
if lock == -1 then
do
/* add */
drop ADDR.
ADDR.LAST = surname
ADDR.FIRST = prename
ADDR.EMAIL.COUNT = 1
ADDR.EMAIL.1.ADR = eaddr
ADDR.EMAIL.1.DES = incomment
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_Add|_Cancel"',
'PROMPT="Add entry\nName : \338'||ADDR.FIRST||' '||ADDR.LAST||'\330\nEmail : \338',
||eaddr||' '||incomment||'\330\nto the database ?"'
if RC = 0 then
if RESULT = 1 then
do
'ADD STEM=ADDR.'
'SAVE'
end
signal done
end
else
do
/* append */
drop ADDR.
'LOCK '||lock
'QUERY STEM=ADDR.'
emailno = ADDR.EMAIL.COUNT + 1
ADDR.EMAIL.COUNT = emailno
ADDR.EMAIL.emailno.ADR = eaddr
ADDR.EMAIL.emailno.DES = incomment
'REQUESTRESPONSE TITLE="ABook Import" BUTTON="**_Append|_Cancel"',
'PROMPT="Append to entry\nName : \338'||ADDR.FIRST||' '||ADDR.LAST||'\330\nEmail : \338',
||eaddr||' '||incomment||'\330\nto the database ?"'
if RC = 0 then
if RESULT = 1 then
do
'EDIT STEM=ADDR.'
'SAVE'
end
'UNLOCK '||lock
end
end
end /* ADD */
done:
exit
SYNTAX:
address value oldaddress
'REQUEST "ABook.intui" "OK" "Sorry, error line '||SIGL||':'||ERRORTEXT(RC)||' :-("'
exit 20